package com.hue.netty.day02.five;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.ByteToMessageDecoder;
import java.util.List;

/*
    服务端的解码器:
        将byte转换为long类型
    还可以继承ReplayingDecoder<T>,指定处理的类型，可以不用写if判断
 */
public class ServerByteToLongHandler extends ByteToMessageDecoder {
    //该方法的调用次数取决于接收数据的大小,知道可读的数据小于8个byte为止
    @Override
    protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {
        System.out.println("服务端调用了解码器");
        if (in.readableBytes() >= 8) {
            //读取buf中的8个字节到out中，交由下一个ChannelInBoundHandler处理
            out.add(in.readLong());
        }
    }
}
